CentOS GRUB损坏修复方法
CentOS GRUB损坏修复方法
zphj1987前言
博客很久没有更新了,一个原因就是原来存放部署博客的环境坏了,硬盘使用的是SSD,只要读取到某个文件,整个磁盘就直接识别不到了,还好博客环境之前有做备份,最近一直没有把部署环境做下恢复,今天抽空把环境做下恢复并且记录一篇基础的GRUB的处理文档
这两天正好碰到GRUB损坏的事,很久前处理过,但是没留下文档,正好现在把流程梳理一下,来解决grub.cfg损坏的情况,或者无法启动的情况
实践步骤
安装操作系统的时候会有多种可能分区的方法,一个直接的分区,一个是用了lvm,本篇将几种分区的情况分别写出来
lvm分区的情况
1 | [root@localhost ~]# df -h |
模拟/boot/grub2/grub.cfg的破坏
1 | [root@localhost ~]# mv /boot/grub2/grub.cfg /boot/grub2/grub.cfgbk |
1 | [root@localhost ~]# reboot |
重启后就会出现这个
使用ls查询当前的分区情况
查询分区情况
可以看到(hd0,msdos1)可以列出/boot里面的内容,可以确定这个就是启动分区
设置root
1 | grub> set root=(hd0,msdos1) |
命令后面的路径可以用tab键补全,/dev/mapper/centos-root为根分区,因为当前的分区模式是lvm的
1 | grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/centos-root |
1 | grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img |
启动
1 | grub> boot |
进入系统后重新生成grub.cfg
1 | grub2-mkconfig -o /boot/grub2/grub.cfg |
然后重启下系统验证是否好了
###一个完整/分区形式
这种情况,整个安装的系统就一个分区,boot是作为/分区的一个子目录的情况
ls 查询分区
设置根分区
1 | grub> set root=(hd0,msdos3) |
可以看到上面是msdos3分区对应的就是root=/dev/sda3,下面就设置这个root
设置linux16
1 | grub> linux16 /root/vmlinuz-3.10.0-693.el7.x86_64 root=/dev/sda3 |
设置initrd16
1 | grub> initrd16 /root/initramfs-3.10.0-693.el7.x86_64.img |
启动
1 | grub> boot |
进入系统后重新生成grub.cfg
1 | grub2-mkconfig -o /boot/grub2/grub.cfg |
然后重启下系统验证是否好了
/分区和/boot分区独立分区的情况
设置根分区
1 | grub> set root=(hd0,msdos1) |
根据/分区为msdos2可以知道root分区为/dev/sda2
1 | grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=/dev/sda2 |
设置initrd16
1 | grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img |
启动
1 | grub> boot |
进入系统后重新生成grub.cfg
1 | grub2-mkconfig -o /boot/grub2/grub.cfg |
然后重启下系统验证是否好了
总结
主要的处理流程如下:
- 首先通过
ls
得到分区的情况 - 通过
set
设置/boot所在的分区为root - 分别设置linux16,initrd16并且指定root分区为/分区所在的目录
- 重启后重新生成grub即可
本篇作为一个总结以备不时之需
变更记录
Why | Who | When |
---|---|---|
创建 | 武汉-运维-磨渣 | 2017-11-30 |
评论
匿名评论隐私政策